home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 325_02 / function.doc < prev    next >
Text File  |  1990-03-26  |  50KB  |  1,891 lines

  1.  
  2.         /*    Functions    */
  3.  
  4. OpenGraph
  5. ---------
  6.  
  7.     Include    : grph.h
  8.     Declaration : int far pascal OpenGraph(Byte Mode,Byte Erase)
  9.     Parameters    : Mode = Bios mode no. to set
  10.             Erase = 0 video buffer is cleared
  11.                 1 video buffer is not cleared
  12.     Return    : Mode no. if successful.
  13.     Usage    :
  14.  
  15.     OpenGraph(0x12,0);
  16.  
  17.     This will set Video adapter in mode hex 12, and erase the video buffer.
  18.  
  19.     Description : sets the system in Graphics mode, Video buffer is cleared
  20.     if Erase = 0, and not cleared when Erase = 1.
  21.  
  22.     Mode is mapped to BIOS mode no. according to following scheme, which can
  23.     be modified in GRPH.H
  24.  
  25.     Mode    Resolutions and colors             BIOS Mode No
  26.  
  27.       0        640x350x16                0x10
  28.       1        640x480x16                0x12
  29.       2        320x200x256             0x13
  30.       3        640x400x256             0x5c
  31.       4        640x480x256             0x5d
  32.       5        800x600x16                0x5b
  33.       6        1024x768x16             0x5f
  34.  
  35.     Mode Nos. 4 and 6 require 512k video memory.
  36.  
  37.     This function also sets up a no. of graphics state defaults.
  38.  
  39.     Sets up Graphics controller in the requested mode.
  40.     Sets current viewport to whole screen, specifically, viewport boundaries
  41.     will be (0,0) and (XRes,YRes).
  42.     sets up world co-ordinates same as viewport co-ordinates, i. e.
  43.     one-to-one mapping between viewport and world co-ordinates.
  44.     clipping is enabled, drawing color is 7, fillpattern is Solid-fill
  45.     (Fp[19] in PATTERN.H), all drawing styles also solid.
  46.     Binary font from file 'v8x8.fnt', and stroked font from file 'sdflt.fnt',
  47.     these files should be in the current directory.
  48.  
  49.  
  50. CloseGraph
  51. ----------
  52.  
  53.     Include    : grph.h
  54.     Declaration : void far pascal CloseGraph(void)
  55.     Usage    :
  56.  
  57.     CloseGraph();
  58.  
  59.     This call will, normally, return to text mode.
  60.  
  61.     Description : Resets to Previous mode when OpenGraph was called with
  62.     Erase = 0, (Modes are not stacked !)
  63.  
  64.  
  65. SetFillPattern
  66. --------------
  67.  
  68.     Include    : grph.h
  69.     Declaration : void far pascal SetFillPattern(Byte Color,Byte XIndex,
  70.                    Byte YIndex,void  far *Pattern)
  71.     Parameters    : Color = culor value of fill, either 0 to 255 or 0 to 15
  72.               depending upon mode
  73.           XIndex = 0-7, Start index from left within Pattern matrix
  74.           YIndex = 0-7, start index from top within pattern matrix
  75.           Pattern = 8 bytes Pattern array
  76.     Usage    :
  77.  
  78.     SetFillPattern(8,0,0,Fp[0]);
  79.  
  80.     Will set fill color to 8 (grey), Indexes are zero, and fill pattern
  81.     to be used is 1st. pattern of the standard patterns Fp defined in
  82.     PATTERN.H.
  83.  
  84.     Description :
  85.  
  86.     This call is used to set either standard or user defined fill patterns,
  87.     fill color, and fill pattern indices, so subsequent calls to area
  88.     fill routines will use these parameters.
  89.  
  90.  
  91. GetFillPattern
  92. --------------
  93.  
  94.     Include    : grph.h
  95.     Declaration : void far pascal GetFillPattern(void *Color,void *XIndex,
  96.                   void *YIndex, void far *Pattern)
  97.     Parameters    : Color = Address of Byte variable, will contain color value
  98.           XIndex, YIndex = Addresses of integers
  99.           Pattern = Address of 8 byte array to return fill pattern
  100.     Usage    : GetFillPattern(&clr, &ix, &iy, pattern);
  101.  
  102.     this will return fill pattern parameters in the respective variables
  103.  
  104.     Description : Returns Fill Parameters
  105.  
  106.  
  107. SetViewPort
  108. -----------
  109.  
  110.     Include    : grph.h
  111.     Declaration : void far pascal SetViewPort(struct VP vp1)
  112.     Parameters    : structure VP type variable vp1 containing corner co-ordinates
  113.           of the viewport
  114.     Usage    :
  115.  
  116.     struct  VP    vp1;
  117.  
  118.     vp1.x1 = 10;
  119.     vp1.y1 = 10;
  120.     vp1.x2 = 120;
  121.     vp1.y2 = 140;
  122.  
  123.     SetViewPort(VP);
  124.  
  125.     This will set up a view port with upper left corner at (10,10) and
  126.     lower right corner at (120,140), in device co-ordinates.
  127.  
  128.     Description :
  129.  
  130.     Sets viewport boundaries, with upper left x , upper left y, lower right x,
  131.     lower right y device co-ordinates given by x1,y1,x2,y2 of structure VP.
  132.     With clipping enabled, all drawings can be clipped to this viewport
  133.     boundary. However, absolute co-ordinates (10,10) will not be translated
  134.     to (0,0) in the above given example. This can be achieved by a small
  135.     inteface routine of your own, so can the 'Normalised Device Co-ordinates"
  136.     be implemented by a small translation routine.
  137.  
  138.     At mode set, by OpenGraph procedure, default viewport is entire screen and
  139.     clipping is enabled.
  140.  
  141.  
  142. GetViewPort
  143. -----------
  144.  
  145.     Include    : grph.h
  146.     Declaration : void far pascal GetViewPort(struct VP *vp1)
  147.     Parameters    : Address of a variable of type structure VP
  148.     Usage    : GetViewPort(&vp1);
  149.  
  150.     Returns current viewport co-ordinates in vp1.
  151.  
  152.     Description : x1, y1, x2, y2 of structure VP type variable vp1 will
  153.     contain co-ordinates of upper left corner and lower right corner of
  154.     the current active v. p.
  155.  
  156.  
  157. SetXLen
  158. -------
  159.  
  160.     Include    : grph.h
  161.     Declaration : void far pascal SetXLen(Word Length)
  162.     Parameters    : Word type Length containing no of bytes.
  163.     Usage    :
  164.  
  165.     SetXLen(100);
  166.  
  167.     will set video buffer length to 100 bytes.
  168.  
  169.     Description : Re-dimensions video buffer with length as Length Bytes,
  170.     and height as 64*1024/Length bytes, only applicable in modes 0x10 and 0x12.
  171.  
  172.     This is like having a drawing area larger than what is displayed on
  173.     screen at a time, function SScroll() can be used to scroll display
  174.     horizontally or vertically so that portions of video buffer become
  175.     visible.
  176.  
  177.  
  178. ImageSize
  179. ---------
  180.  
  181.     Include    : grph.h
  182.     Declaration : #define ImageSize(int x1,int y1,int x2,int y2) \
  183.                  ((abs(x2-x1)+1)*(abs(y2-y1)+1)+5)
  184.     Parameters    : x1,y1 = upper left corner of the image
  185.           x2,y2 = lower right corner of the image
  186.     Usage    :
  187.  
  188.     int     isize;
  189.  
  190.     isize = ImageSize(10,10,120,140);
  191.  
  192.     will calculate no of bytes required to store an image (rectangular),
  193.     with upper left corner at device co-ordinates (10,10) and lower right
  194.     corner at device co-ordinates (120,140)
  195.  
  196.     Description : Calculates No of bytes required to store Bit image bounded
  197.     by rectangular region x1,y1,x2,y2, so that memory can be allocated for a
  198.     buffer of that size for subsequent bit-block moves.
  199.  
  200.  
  201. GetImage
  202. --------
  203.  
  204.     Include    : grph.h
  205.     Declaration : void far pascal GetImage(int Ulx ,int Uly,int Lrx,int Lry,\
  206.                  void far *Buffer)
  207.     Parameters    : Ulx, Uly = co-ordinates of upper left corner
  208.           Lrx, Lry = co-ordinates of lower right corner
  209.           Buffer   = Address of buffer to store Image
  210.     Usage    :
  211.  
  212.     void    far *pB;
  213.  
  214.     pB = (void far *)malloc(ImageSize(10,10,120,140));
  215.  
  216.     GetImage(10,10,120,140,pB);
  217.  
  218.     will calculate size of the image and store it in buffer, the image
  219.     bounded by upper left corner at (10,10) and lower right corner at
  220.     (120,140).
  221.  
  222.     Description : Returns Bit-Image bounded by rectangular region Ulx,Uly and
  223.     Lrx, Lry in Buffer, for subsequent Bit block moves
  224.  
  225.  
  226. PutImage
  227. --------
  228.  
  229.     Include    : grph.h
  230.     Declaration : void far pascal PutImage(int Ulx,int Uly,void  far *Buffer)
  231.     Parameters    : Ulx, Uly = co-ordinates of left corner of position
  232.           where to store image.
  233.           Buffer = Address of buffer containig bit image, previously
  234.           obtained by a call to GetImage, or read from file by a
  235.           call to LoadImage.
  236.     Usage    :
  237.  
  238.     GetImage(10,10,110,110,pB);     /* assume pB is allocated */
  239.  
  240.     for (i=10; i<530; i++)
  241.     PutImage(i,220,pB);
  242.  
  243.     will put image on screen from pB from x-co-ordinate 10 to 520 and y = 220,
  244.     if left vertical edge of the image is same as background, then this will
  245.     have an effect of sliding the image from left to right.
  246.  
  247.     Description : Displays Bit Image stored in Buffer, obtained by a call to
  248.     GetImage, at (Ulx,Uly) as upper left corner
  249.  
  250.  
  251. CopyImage
  252. ---------
  253.  
  254.     Include    : grph.h
  255.     Declaration : void far pascal CopyImage(int Ulx,int Uly,int Lrx,int Lry,\
  256.                int x,int y)
  257.     Parameters    : Ulx, Uly = upper left corner co-ordinates
  258.           Lrx, Lry = Lower right corner co-ordinates
  259.           x,y       = upper left corner do-ordinates of the destination
  260.     Usage